home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-02-13 | 40.1 KB | 1,255 lines |
- Menad┐er Pakiet≤w RedHat-a (RPM) - Jak To Zrobiµ
- Autor: Donnie Barnes djb@redhat.com
- V2.0, 8 Kwietnia 1997
- Wersja polska: Jacek Pliszka pliszka@fuw.edu.pl
-
-
- Niniejszy dokument jest t│umaczeniem RPM-HOWTO i w skr≤cie opisuje jak
- co╢ zrobiµ u┐ywaj▒c rpm-a czyli Menad┐era Pakiet≤w RedHat-a (RedHat
- Package Manager). Dokument ten zosta│ napisany w standardzie
- ISO-8859-2. Orygina│ t│umaczenia tego dokumentu znajduje siΩ pod
- adresem http://www.jtz.org.pl <http://www.jtz.org.pl>.
- http://www.jtz.org.pl a tak┐e na ftp://ftp.icm.edu.pl/pub/Linux/sun¡
- site/docs/HOWTO/ <ftp://ftp.icm.edu.pl/pub/Linux/sunsite/docs/HOWTO/>.
- ______________________________________________________________________
-
- Table of Contents
-
-
- 1. Wprowadzenie
-
- 2. Do czego s│u┐y RPM?
-
- 3. Informacje og≤lne
-
- 3.1 Sk▒d wzi▒µ RPM?
- 3.2 Wymagania RPM
-
- 4. U┐ywanie RPM
-
- 5. A co tak
-
- 6. Tworzenie rpm-≤w.
-
- 6.1 Plik rpmrc
- 6.2 Plik specyfikuj▒cy .spec
- 6.3 Nag│≤wek
- 6.4 Sekcja Prep
- 6.5 Sekcja Build
- 6.6 Sekcja Install
- 6.7 Opcjonalne sekcje pre i post dla sekcji Install/Uninstall
- 6.8 Sekcja Files
- 6.9 Tworzenie pakietu
- 6.9.1 Katalogi z plikami ╝r≤d│owymi
- 6.9.2 Pr≤bne tworzenie pakietu
- 6.9.3 Tworzenie listy plik≤w
- 6.9.4 Tworzenie pakietu RPM
- 6.10 Testowanie pakietu
- 6.11 Co robiµ z Twoimi nowymi RPM-ami ?
- 6.12 Co teraz?
-
- 7. Tworzenie RPM-≤w na wiele platform.
-
- 7.1 Przyk│adowy plik specyfikuj▒cy .spec
- 7.2 Dyrektywa optflags
- 7.3 Makra
- 7.4 Wy│▒czanie pewnych platform w pakietach
- 7.5 Ostatnie poprawki
-
- 8. Uwaga o prawach autorskich
-
-
-
- ______________________________________________________________________
-
-
-
- 1. Wprowadzenie
-
- Skr≤t RPM pochodzi od ang. Red Hat Package Manager co oznacza w
- wolnym t│umaczeniu menad┐er pakiet≤w RedHat-a. Jednak pomimo tego, ┐e
- w nazwie znajduje siΩ Red Hat, to w zamierzeniu jest on systemem
- otwartym, dostΩpnym dla ka┐dego. Umo┐liwia on spakowanie zar≤wno kodu
- ╝r≤d│owego jak i program≤w binarnych do zwartej postaci zawieraj▒cej
- dodatkowo informacje istotne przy zarz▒dzaniu oprogramowaniem.
- Umo┐liwia to │atw▒ instalacjΩ, od╢wie┐anie oraz usuwanie
- oprogramowania. Informacja o zainstalowanym oprogramowaniu jest │atwo
- dostΩpna jako ┐e RPM tworzy bazΩ danych o wszystkich pakietach
- zainstalowanych w naszym systemie. Pozwala to na szybkie sprawdzenie
- czy dany pakiet jest zainstalowany, a je╢li tak to co zawiera, jaka
- jest jego wersja, jakie pliki zosta│y przez niego w systemie
- zainstalowane oraz jakich innych pakiet≤w wymaga. Pozwala te┐
- sprawdziµ do jakiego pakietu nale┐y dany plik.
-
- Przyp. t│um. rpm jest obecnie u┐ywany zar≤wno do plik≤w w postaci
- ╝r≤d│owej jak i binarnej. W oryginale autor odwo│ujΩ siΩ g│≤wnie do
- tej pierwszej. Jednak poniewa┐ obecnie czΩ╢ciej u┐ywa siΩ pakiet≤w w
- postaci binarnej to pliki z kt≤rych powsta│ rpm a kt≤re maj▒ byµ
- zainstalowane r≤wnie┐ bΩdΩ nazywa│ plikami ╝r≤d│owymi za╢ proces
- instalacji b▒d╝ kompilacji - instalacj▒.
-
-
- Firma Red Hat Software zachΩca inne firmy i grupy tworz▒ce
- oprogramowanie do bli┐szego zapoznania siΩ z RPM i wykorzystania go
- przy tworzeniu w│asnych pakiet≤w. BΩd▒c do╢µ elastycznym i │atwym w
- u┐yciu, RPM pozwala budowaµ nawet bardzo obszerne zbiory pakiet≤w.
- Pomimo tego, ┐e jest to system ca│kowicie otwarty i dostΩpny, jego
- autorzy chΩtnie wys│uchaj▒ informacji o b│Ωdach i ewentualnych
- poprawkach. (Jednak przed zg│oszeniem ``b│Ωdu'' nale┐y, tak jak
- zawsze, najpierw sprawdziµ czy ma siΩ najnowsz▒ stabiln▒ wersjΩ,
- przejrzeµ dokumentacjΩ oraz przeszukaµ archiwa USENET i je╢li i tam
- nie bΩdzie odpowiedzi - spytaµ na odpowiedniej grupie dyskusyjnej np.
- pl.comp.os.linux -przyp. t│um.) U┐ywanie i rozpowszechnianie RPM jest
- wolne od op│at i regulowane Publiczn▒ Licencj▒ GNU - GPL (ang. GNU
- Public Licence).
-
-
- Bardziej szczeg≤│owa dokumentacja dotycz▒ca RPM jest zawarta w ksi▒┐ce
- Eda Bailey'a, Maximum RPM, kt≤ra mo┐na ╢ci▒gn▒µ b▒d╝ zakupiµ w
- www.redhat.com <http://www.redhat.com>.
-
-
- 2. Do czego s│u┐y RPM?
-
- Na pocz▒tku warto powiedzieµ co nieco o ``filozofii'' RPM. Celem jego
- projektant≤w by│o umo┐liwienie u┐ycia pierwotnych kod≤w ╝r≤d│owych.
- Zanim powsta│ RPM, jego autorzy u┐ywali RPP (przy czym podkre╢laj▒, ┐e
- RPM nie nie jest na nim oparty ), w kt≤rym udostΩpniano poprawione
- kody ╝r≤d│owe, konkretnie te, kt≤re by│y u┐ywane do instalacji.
- Teoretycznie mog│oby to wystarczyµ, bo mo┐na by│o zainstalowaµ pakiet
- ╝r≤d│owy RPP i skompilowaµ go (poleceniem make) bez wiΩkszych
- problem≤w. Jednak┐e nie by│y to oryginalne ╝r≤d│a i trudno by│o na
- pierwszy rzut oka powiedzieµ co w nich zosta│o zmienione. NiezbΩdnym
- by│o ╢ci▒gniΩcie r≤wnie┐ oryginalnych ╝r≤de│. RPM za╢ zawiera
- oryginalne ╝r≤d│a wraz z poprawkami kt≤rych dokonano. W opinii autor≤w
- rozwi▒zanie to jest znacznie lepsze. Dlaczego?
-
- Z paru powod≤w. Po pierwsze, je╢li pojawi siΩ nowa wersja programu to
- nie zaczynamy od zera. Niekt≤re poprawki, kt≤re by│y dobre dla
- poprzedniej wersji, mog▒ byµ w│a╢ciwe, najwy┐ej po minimalnych
- zmianach i dla obecnej. By siΩ o tym przekonaµ, wystarczy do nich
- zajrzeµ. Poza tym wszystkie domy╢lne opcje potrzebne do instalacji s▒
- w ten spos≤b │atwo dostΩpne.
- Poza tym RPM zaprojektowano tak, aby umo┐liwiµ sprawdzanie wielu
- istotnych informacji dotycz▒cych zar≤wno pojedy±czego, konkretnego
- pakietu jak i ich zestawu b▒d╝ te┐ wszystkich pakiet≤w zainstalowanych
- w danym systemie. Przyk│adem takiej informacji jest lista pakiet≤w,
- kt≤rych dany pakiet wymaga wraz z numerami wersji. Mo┐liwe jest
- r≤wnie┐ sprawdzenie z jakiego pakietu pochodzi konkretny plik oraz
- gdzie mo┐na znale╝µ jego wersjΩ ╝r≤d│ow▒. Pliki RPM s▒ ju┐
- wewnΩtrznie spakowane, ale sprawdzanie informacji dotycz▒cych
- konkretnego pakietu jest proste i szybkie dziΩki specjalnemu binarnemu
- nag│≤wkowi kt≤ry zawiera praktycznie wszystkie niezbΩdne informacje o
- pakiecie.
-
-
- Innym atutem RPM jest umiejΩtno╢µ weryfikacji pakiet≤w. Je╢li boisz
- siΩ, ┐e skasowa│e╢ jaki╢ wa┐ny plik, to mo┐esz to po prostu sprawdziµ.
- RPM poinformuje CiΩ o wykrytych nieprawid│owo╢ciach. Je╢li zajdzie
- potrzeba, to mo┐esz │atwo odnowiµ zainstalowany pakiet przy czym Twoje
- pliki konfiguracyjne zostan▒ zachowane. Oczywi╢cie mo┐esz te┐
- zainstalowaµ je od nowa.
-
-
-
- Autorzy chc▒ podziΩkowaµ grupie ludzi od dystrybucji BOGUS za wiele
- ich idei i pomys│≤w kt≤re wykorzystano w RPM. Gdy┐ o ile RPM zosta│
- napisany w ca│o╢ci przez Red Hat Software, to zasady jego dzia│ania s▒
- oparte na kodzie stworzonym przez BOGUS (PM oraz PMS).
-
-
- 3. Informacje og≤lne
-
-
- 3.1. Sk▒d wzi▒µ RPM?
-
- Najprostszym sposobem jest instalacja Linux-a Red Hat. Je╢li kto╢ nie
- chce tego robiµ to mo┐e u┐ywaµ RPM bez tego. W Polsce RPM jest
- dostΩpny np. pod adresem: ftp.icm.edu.pl
- <ftp://ftp.icm.edu.pl/pub/redhat/code/rpm> - polskim mirrorze
- ftp.redhat.com.
-
-
- 3.2. Wymagania RPM
-
- Podstawowym wymaganiem RPM-a jest cpio o numerze wersji 2.4.2 lub
- wy┐szym. Mimo ┐e RPM jest pomy╢lany do pracy pod Linux-em to r≤wnie
- mo┐e byµ przeniesiony na inne systemy Unix. W rzeczywisto╢ci uda│o siΩ
- go ju┐ uruchomiµ pod SunOS, Solaris, AIX, Irix, AmigaOS i wieloma
- innymi systemami. Jednak nale┐y pamiΩtaµ, ┐e pakiety binarne
- stworzone na r≤┐nych Unix-ach mog▒ nie byµ ze sob▒ zgodne.
-
-
- S▒ to minimalne wymagania by zainstalowaµ RPM-y. By tworzyµ RPM-y z
- kodu ╝r≤d│owego potrzebne jest r≤wnie┐ wszystko to co normalnie jest
- wymagane przy tworzeniu pakietu np. gcc, make, itd.
-
-
- 4. U┐ywanie RPM
-
- Najprostszym wykorzystaniem RPM jest instalacja nowego pakietu:
-
-
- rpm -i foobar-1.0-1.i386.rpm
-
-
-
-
- R≤wnie proste jest jego odinstalowanie:
- rpm -e foobar
-
-
-
-
- Przyk│adem bardziej z│o┐onego, ale bardzo u┐ytecznego polecenia jest
- instalacja pakiet≤w poprzez FTP. Je╢li jeste╢ pod│▒czony do sieci i
- chcesz zainstalowaµ nowy pakiet, to wszystko co musisz zrobiµ to podaµ
- nazwΩ pliku jako poprawny URL, np.:
-
-
- rpm -i ftp://ftp.pht.com/pub/linux/redhat/rh-2.0-beta/RPMS/foobar-1.0-1.i386.rpm
-
-
-
-
- Chcia│bym podkre╢liµ, ┐e w tym przypadku RPM sprawdzi b▒d╝ zainstaluje
- pakiet poprzez FTP.
-
- By│y to w miarΩ proste polecenia, lecz rpm mo┐e byµ u┐yty na wiele
- wiΩcej sposob≤w jak mo┐na siΩ │atwo przekonaµ pisz▒c w linii komend
-
-
- rpm
-
-
-
-
- i naciskaj▒c Enter:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- RPM version 2.3.9
- Copyright (C) 1997 - Red Hat Software
- This may be freely redistributed under na warunkach
- of the
- GNU Public License
-
- usage: rpm {--help}
- rpm {--version}
- rpm {--initdb} [--dbpath <dir>]
- rpm {--install -i} [-v] [--hash -h] [--percent] [--force] [--test]
- [--replacepkgs] [--replacefiles] [--root <dir>]
- [--excludedocs] [--includedocs] [--noscripts]
- [--rcfile <file>] [--ignorearch] [--dbpath <dir>]
- [--prefix <dir>] [--ignoreos] [--nodeps]
- [--ftpproxy <host>] [--ftpport <port>]
- file1.rpm ... fileN.rpm
- rpm {--upgrade -U} [-v] [--hash -h] [--percent] [--force] [--test]
- [--oldpackage] [--root <dir>] [--noscripts]
- [--excludedocs] [--includedocs] [--rcfile <file>]
- [--ignorearch] [--dbpath <dir>] [--prefix <dir>]
- [--ftpproxy <host>] [--ftpport <port>]
- [--ignoreos] [--nodeps] file1.rpm ... fileN.rpm
- rpm {--query -q} [-afpg] [-i] [-l] [-s] [-d] [-c] [-v] [-R]
- [--scripts] [--root <dir>] [--rcfile <file>]
- [--whatprovides] [--whatrequires] [--requires]
- [--ftpuseport] [--ftpproxy <host>] [--ftpport <port>]
- [--provides] [--dump] [--dbpath <dir>] [targets]
- rpm {--verify -V -y} [-afpg] [--root <dir>] [--rcfile <file>]
- [--dbpath <dir>] [--nodeps] [--nofiles] [--noscripts]
- [--nomd5] [targets]
- rpm {--setperms} [-afpg] [target]
- rpm {--setugids} [-afpg] [target]
- rpm {--erase -e} [--root <dir>] [--noscripts] [--rcfile <file>]
- [--dbpath <dir>] [--nodeps] [--allmatches]
- package1 ... packageN
- rpm {-b|t}[plciba] [-v] [--short-circuit] [--clean] [--rcfile <file>]
- [--sign] [--test] [--timecheck <s>] specfile
- rpm {--rebuild} [--rcfile <file>] [-v] source1.rpm ... sourceN.rpm
- rpm {--recompile} [--rcfile <file>] [-v] source1.rpm ... sourceN.rpm
- rpm {--resign} [--rcfile <file>] package1 package2 ... packageN
- rpm {--addsign} [--rcfile <file>] package1 package2 ... packageN
- rpm {--checksig -K} [--nopgp] [--nomd5] [--rcfile <file>]
- package1 ... packageN
- rpm {--rebuilddb} [--rcfile <file>] [--dbpath <dir>]
- rpm {--querytags}
-
-
-
-
- Wszystkie te opcje s▒ opisane w podrΩczniku systemowym "man"
- dotycz▒cym RPM.
-
-
- 5. A co tak naprawdΩ mo┐na zrobiµ z RPM?
-
- RPM jest bardzo wygodnym narzΩdziem i jak mo┐na by│o siΩ przekonaµ, ma
- sporo opcji. Najlepsz▒ metod▒ zapoznania siΩ z nimi s▒ przyk│ady.
-
- Pokaza│em ju┐ najprostsz▒ instalacjΩ i usuwanie pakiet≤w, czas na
- trochΩ ciekawsze przyk│ady:
-
- ╖ W praktyce instaluj▒c pakiet chce siΩ usun▒c jego star▒ wersjΩ
- (opcja -U od ang. upgrade). CzΩsto chcemy r≤wnie┐ widzieµ postΩp
- instalacji (-h od ang. hash) oraz dostaµ poszerzone komunikaty o
- b│Ωdach (-v od ang. verbose), tak wiΩc praktycznie najczΩ╢ciej
- pakiety instaluje siΩ poprzez:
- rpm -Uhv foobar-1.0-1.i386.rpm
-
-
-
-
- ╖ Powiedzmy, ┐e skasowa│e╢ przypadkiem jakie╢ pliki, niestety, nie
- znasz nawet ich nazw. Je╢li wiΩc chcesz zweryfikowaµ ca│y system i
- sprawdziµ czego mo┐e brakowaµ, zr≤b tak:
-
-
- rpm -Va
-
-
-
-
- (od ang. Verify all)
-
- ╖ Powiedzmy, ┐e natkn▒│e╢ siΩ na plik, kt≤rego nie znasz. »eby
- sprawdziµ do jakiego pakietu nale┐y, zr≤b:
-
-
- rpm -qf /usr/X11R6/bin/xjewel
-
-
-
-
- (od ang. query file). W wyniku otrzymasz nazwΩ pakietu:
-
-
- xjewel-1.6-1
-
-
-
-
-
- ╖ Natkn▒│e╢ siΩ na jaki╢ plik RPM i chcia│by╢ sprawdziµ co jest w
- ╢rodku. Zr≤b tak:
-
-
- rpm -qpi koules-1.2-2.i386.rpm
-
-
-
-
- Wy╢wietli Ci siΩ co╢ takiego:
-
-
- Name : koules Distribution: Red Hat Linux Colgate
- Version : 1.2 Vendor: Red Hat Software
- Release : 2 Build Date: Mon Sep 02 11:59:12 1996
- Install date: (none) Build Host: porky.redhat.com
- Group : Games Source RPM: koules-1.2-2.src.rpm
- Size : 614939
- Summary : SVGAlib action game with multiplayer, network, and sound support
- Description :
- This arcade-style game is novel in conception and excellent in execution.
- No shooting, no blood, no guts, no gore. The play is simple, but you
- still must develop skill to play. This version uses SVGAlib to
- run on a graphics console.
-
-
-
-
- (od ang. query package info).
-
-
- ╖ A teraz chcia│by╢ sprawdziµ jakie pliki wchodz▒ w sk│ad tego
- pakietu:
-
-
- rpm -qpl koules-1.2-2.i386.rpm
-
-
-
-
- W wyniku otrzymasz ich listΩ:
-
-
- /usr/doc/koules
- /usr/doc/koules/ANNOUNCE
- /usr/doc/koules/BUGS
- /usr/doc/koules/COMPILE.OS2
- /usr/doc/koules/COPYING
- /usr/doc/koules/Card
- /usr/doc/koules/ChangeLog
- /usr/doc/koules/INSTALLATION
- /usr/doc/koules/Icon.xpm
- /usr/doc/koules/Icon2.xpm
- /usr/doc/koules/Koules.FAQ
- /usr/doc/koules/Koules.xpm
- /usr/doc/koules/README
- /usr/doc/koules/TODO
- /usr/games/koules
- /usr/games/koules.svga
- /usr/games/koules.tcl
- /usr/man/man6/koules.svga.6
-
-
-
-
- (od ang. query package list)
-
- ╖ Chcesz wy╢wietliµ listΩ pakiet≤w zainstalowanych w Twoim systemie?
- Nic prostszego:
-
-
- rpm -qa
-
-
-
-
- (od ang. query all).
-
- ╖ Chcesz sprawdziµ czy pakiet jest kompletny, nie przek│amany i mam
- poprawny podpis PGP?
-
-
- rpm -K -vv pakiet.rpm
-
-
-
-
- To by│o tylko parΩ przyk│ad≤w, wiΩcej znajdziesz np. w man-ie. Na
- pewno wpadniesz na ciekawsze w miarΩ jak bΩdziesz lepiej poznawa│ RPM.
-
-
- 6. Tworzenie rpm-≤w.
-
- Tworzenie rpm-≤w jest do╢µ proste, szczeg≤lnie je╢li oprogramowanie
- kt≤re chcesz w nie w│o┐yµ poprawnie siΩ instaluje.
-
-
- Procedura tworzenia RPM-≤w wygl▒da tak:
-
- ╖ Upewnij siΩ, ┐e plik /etc/rpmrc jest obecny i poprawnie
- skonfigurowany w Twoim systemie.
-
- ╖ Doprowad╝ to tego, ┐e pliki ╝r≤d│owe dla kt≤rych tworzysz rpm
- poprawnie siΩ instaluj▒.
-
- ╖ Przygotuj listΩ poprawek jakich musia│e╢ dokonaµ by kod kompilowa│
- siΩ poprawnie.
-
- ╖ Przygotuj plik specyfikuj▒cy (.spec) dla Twojego pakietu.
-
- ╖ Upewnij siΩ, ┐e wszystko jest na swoim miejscu.
-
- ╖ Zbuduj pakiet u┐ywaj▒c rpm.
-
- Zazwyczaj RPM tworzy zar≤wno pakiety binarne jak i ╝r≤d│owe.
-
-
- 6.1. Plik rpmrc
-
- W chwili obecnej, jedyny spos≤b konfiguracji RPM-a jest dostΩpny
- poprzez plik /etc/rpmrc. Przyk│adowy plik wygl▒da tak:
-
-
- require_vendor: 1
- distribution: Moja w│asna dystrybucja!
- require_distribution: 1
- topdir: /usr/src/me
- vendor: Kubu╢soft
- packager: Pakuj▒cy RPM w Kubu╢soft <pakiety@kubu╢soft.com.pl>
-
- optflags: i386 -O2 -m486 -fno-strength-reduce
- optflags: alpha -O2
- optflags: sparc -O2
-
- signature: pgp
- pgp_name: Pakuj▒cy RPM w Kubu╢soft
- pgp_path: /home/pakiety/.pgp
-
- tmppath: /usr/tmp
-
-
-
-
- Wiersz require_vendor zmusza RPM-a do szukania wiersza z nazw▒
- producenta pakiet≤w (vendor). Ta mo┐e pochodziµ z pliku /etc/rpmrc
- lub z nag│≤wka pliku .spec. By wy│▒czyµ tΩ opcjΩ, zmie± liczbΩ na 0.
- Analogicznie jest w przypadku wierszy require_distribution oraz
- require_group.
-
- NastΩpnym wiersz zawiera distribution i okre╢la nazwΩ dystrybucji.
- Mo┐esz j▒ zdefiniowaµ tutaj, b▒d╝ p≤╝niej, w nag│≤wku pliku
- specyfikuj▒cego. Tworz▒c pakiet dla konkretnej dystrybucji warto
- zadbaµ by wiersz ten zawiera│ poprawn▒ informacjΩ, nawet pomimo tego,
- ┐e nie jest wymagany. Tyczy siΩ to r≤wnie┐ wiersza vendor
- (producent), choµ nazwa mo┐e byµ zupe│nie dowolna (np. Joe's Software,
- Rock Music Emporium).
-
- RPM pozwala r≤wnie┐ tworzyµ pakiety dla r≤┐nych platform sprzΩtowych.
- Plik rpmrc mo┐e zawieraµ zmienn▒ ``optflags'' wykorzystywan▒ przy
- building budowaniu tych element≤w pakietu, kt≤re wymagaj▒ opcji
- zale┐nych od platformy. Dok│adniejszy opis tej zmiennej pojawi siΩ w
- jednym z nastΩpnych rodzia│≤w.
-
- Nie s▒ to oczywi╢cie wszystkie etykiety/makra. Jest ich wiΩcej. By
- siΩ im przyjrzeµ spr≤buj komendy:
-
-
- rpm --showrc
-
-
-
-
- kt≤ra powinna wypisaµ wszystkie mo┐liwe etykiety wraz z ich
- warto╢ciami (o ile s▒ ustawione).
-
-
- 6.2. Plik specyfikuj▒cy .spec
-
- Niniejszy rozdzia│ zawiera opis pliku specyfikuj▒cego dla pakietu.
- Plik taki s▒ niezbΩdne by stworzyµ pakiet. Zawiera on opis
- oprogramowania wraz z instrukcjami instalacyjnymi oraz listΩ
- wszystkich plik≤w binarnych przez niego instalowanych.
-
- Plik specyfikuj▒cy warto jest nazwaµ zgodnie z konwencj▒. Powinno to
- wygl▒daµ mniej wiΩcej tak: nazwa pakietu-kreska-numer wersji-kreska-
- numer modyfikacji-kropka-spec.
-
- A tak wygl▒da przyk│adowy plik specyfikuj▒cy (eject-3.0-1.spec):
-
-
- Summary: ejects ejectable media and controls auto ejection
- Name: eject
- Version: 1.4
- Release: 3
- Copyright: GPL
- Group: Utilities/System
- Source: sunsite.unc.edu:/pub/Linux/utils/disk-management/eject-1.4.tar.gz
- Patch: eject-1.4-make.patch
- Patch1: eject-1.4-jaz.patch
- %description
- This program allows the user to eject media that is autoejecting like
- CD-ROMs, Jaz and Zip drives, and floppy drives on SPARC machines.
-
- %prep
- %setup
- %patch -p1
- %patch1 -p1
-
- %build
- make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
-
- %install
- install -s -m 755 -o 0 -g 0 eject /usr/bin/eject
- install -m 644 -o 0 -g 0 eject.1 /usr/man/man1
-
- %files
- %doc README COPYING ChangeLog
-
- /usr/bin/eject
- /usr/man/man1/eject.1
-
-
-
-
-
- 6.3. Nag│≤wek
-
- Nag│≤wek pliku .spec zawiera kilka standardowych p≤l kt≤re powinny byµ
- wype│nione. Oto znaczenie poszczeg≤lnych p≤l:
- ╖ Summary: Jest to jednowierszowy, skr≤cony opis pakietu.
-
- ╖ Name: To pole zawiera nazwΩ pliku rpm. ªci╢le jest to string
- bΩd▒cy t▒ czΩ╢ci▒ nazwy pliku rpm kt≤ra odpowiada nazwie pakietu.
-
- ╖ Version: To pole zawiera wersjΩ pliku rpm. ªci╢le jest to string
- bΩd▒cy t▒ czΩ╢ci▒ nazwy pliku rpm kt≤ra odpowiada wersji pakietu.
-
- ╖ Release: To pole zawiera numer modyfikacji pliku rpm. Jest to
- liczba m≤wi▒ca z kt≤r▒ modyfikacj▒ (podwersj▒) obecnej wersji
- pakietu mamy do czynienia (tzn. je╢li dokonany w pakiecie tylko
- minimalnych poprawek b│Ωd≤w to wypuszczamy pakiet w tej samej
- wersji ale z numerem modyfikacji wiΩkszym o jeden).
-
- ╖ Icon: To pole zawiera nazwΩ pliku z ikon▒ przeznaczon▒ do
- wykorzystania przez narzΩdzia instalacyjne wy┐szego poziomu (np.
- ``glint'' RedHat-a). Plik ten powinien byµ zapisany w formacie GIF
- i znajdowaµ siΩ w katalogu SOURCES.
-
- ╖ Source: This wiersz zawiera nazwΩ pliku ╝r≤d│owego z kt≤rego jest
- budowany dany rpm. Jest to pomocne w sytuacji gdy chce siΩ kiedy╢
- zajrzeµ do odpowiednich kod≤w ╝r≤d│owych lub sprawdziµ czy nie ma
- ich nowszej wersji. Uwaga: Nazwa pliku w tym wierszu MUSI
- odpowiadaµ nazwie pliku obecnego w Twoim systemie. (tzn. nie
- zmieniaj nazw plik≤w ╝r≤d│owych po ich ╢ci▒gniΩciu). Mo┐na podaµ
- wiΩcej ni┐ jeden plik ╝r≤d│owy pisz▒c w poni┐szy spos≤b:
-
-
- Source0: blah-0.tar.gz
- Source1: blah-1.tar.gz
- Source2: fooblah.tar.gz
-
-
-
-
- Te pliki powinny siΩ znale╝µ w katalogu SOURCES. (Struktura tego kat¡
- alogu jest opisana w rozdziale "Katalogi z plikami ╝r≤d│owymi".)
-
- ╖ Patch: To pole zawiera miejsce w kt≤rym bΩdzie mo┐na znale╝µ
- poprawki(patch) je╢li zainstnieje potrzeba ich ponownego
- ╢ci▒gniΩcia. Uwaga: Nazwa tego pliku musi odpowiadaµ nazwie pliku
- jaki jest u┐yty do naniesienia Twoich poprawek. Mo┐na te┐ podaµ
- wiele plik≤w z poprawkami analogicznie do wielu plik≤w ╝r≤d│owych:
-
-
- Patch0: blah-0.patch
- Patch1: blah-1.patch
- Patch2: fooblah.patch
-
-
-
-
- Te pliki powinny siΩ znale╝µ w katalogu SOURCES.
-
- ╖ Copyright: Ten wiersz opisuje do jakiej kategorii ze wzglΩdu na
- prawo autorskie nale┐y dane oprogramowanie. Najlepiej wykorzystaµ
- jedn▒ z dobrze zdefiniowanych kategorii: GPL, BSD, MIT, public
- domain, distributable, lub commercial.
-
- ╖ BuildRoot: Ten wiersz pozwala zdefiniowaµ g│≤wny katalog (``root'')
- dla tworzenia i instalacji pakietu. Mo┐na to wykorzystaµ np. do
- testowania instalacji pakietu zanim siΩ go zainstaluje w docelowym
- miejscu.
-
- ╖ Group: Ten wiersz s│u┐y do tego, by programy instalacyjne wy┐szego
- poziomu (wspomniany ``glint'') wiedzia│y w jakim miejscu ich
- hierarchicznej struktury grup pakiet≤w umie╢ciµ dany pakiet. W
- chwili obecnej drzewo grup pakiet≤w wygl▒da mniej wiΩcej tak:
-
-
- Applications
- Communications
- Editors
- Emacs
- Engineering
- Spreadsheets
- Databases
- Graphics
- Networking
- Mail
- Math
- News
- Publishing
- TeX
- Base
- Kernel
- Utilities
- Archiving
- Console
- File
- System
- Terminal
- Text
- Daemons
- Documentation
- X11
- XFree86
- Servers
- Applications
- Graphics
- Networking
- Games
- Strategy
- Video
- Amusements
- Utilities
- Libraries
- Window Managers
- Libraries
- Networking
- Admin
- Daemons
- News
- Utilities
- Development
- Debuggers
- Libraries
- Libc
- Languages
- Fortran
- Tcl
- Building
- Version Control
- Tools
- Shells
- Games
-
-
-
-
-
-
- ╖ %description Nie jest to element nag│≤wka w ╢cis│ym tego s│owa
- znaczeniu ale jego opis powinien siΩ znale╝µ wraz z opisem
- nag│≤wka. Dla ka┐dego pakietu lub subpakietu potrzebne jest jedno
- takie pole zawieraj▒ce przejrzysty i zrozumia│y opis pakietu.
-
-
- 6.4. Sekcja Prep
-
- Jest to druga czΩ╢µ pliku specyfikuj▒cego. U┐ywa siΩ jej do
- przygotowania ╝r≤de│ do kompilacji/instalacji. W niej powinny
- znajdowaµ siΩ wszystkie czynno╢ci niezbΩdne by nanie╢µ poprawki do
- ╝r≤de│ i doprowadziµ je do stanu w kt≤rym bΩdzie mo┐na wydaµ komendΩ
- make.
-
- Jedn▒ rzecz nale┐y podkre╢liµ: Ka┐da z tych czΩ╢ci jest tak naprawdΩ
- tylko miejscem do umieszczenia odpowiednich skrypt≤w. Mo┐esz po
- prostu napisaµ skrypt w sh a nastΩpnie umie╢ciµ go po znaczniku %prep
- by rozpakowaµ i wprowadziµ poprawki do swoich program≤w. By to
- u│atwiµ powsta│y specjalne makra.
-
- Pierwszym z nich jest makro %setup. W swojej najprostszej formie (bez
- dodatkowych opcji w linii polece±), rozpakowywuje ona ╝r≤d│a i zmienia
- bie┐▒cy katalog na katalog zawieraj▒cy ╝r≤d│a. Poza tym ma jednak
- dodatkowe opcje:
-
- ╖ -n name ustawi nazwΩ roboczego katalogu na name. Domy╢lnie jest to
- $NAZWA-$WERSJA. Do innych mo┐liwo╢ci nale┐▒ $NAZWA,
- ${NAZWA}${WERSJA}, czy jakakolwiek inna u┐ywana przez g│≤wny plik
- tar. (ProszΩ zauwa┐yµ, ┐e zmienne ``$'' nie s▒ faktycznymi
- zmiennymi dostΩpnymi wewn▒trz pliku specyfikuj▒cego. W
- rzeczywisto╢ci s▒ one tutaj u┐yte w miejsce przyk│adowej nazwy. W
- pakiecie nale┐y u┐yµ rzeczywistej nazwy i wersji, a nie zmiennej.)
-
- ╖ -c utworzy i wejdzie do wymienionego katalogu zanim zacznie siΩ
- rozpakowywanie poprzez untar.
-
- ╖ -b # wykona untar (rozpakuje) Source# zanim wejdzie do katalogu
- roboczego (nie ma sensu │▒czenie tej opcji z -c, a wiΩc siΩ tego
- nie robi). Jest to przydatne w przypadku wielu plik≤w ╝r≤d│owych.
-
- ╖ -a # wykona untar (rozpakuje) Source# po wej╢ciu do katalogu.
-
- ╖ -T Ta opcja zmienia domy╢ln▒ procedurΩ rozpakowywania (untar)
- ╝r≤de│ i wymaga -b 0 lub -a 0 by g│≤wny plik ╝r≤d│owy zosta│
- rozpakowany (untar). Komenda ta jest potrzebna gdy u┐ywany jest
- wiΩcej ni┐ jeden komplet plik≤w ╝r≤d│owych.
-
- ╖ -D Nie usuwaj katalogu przed rozpakowaniem. Jest ona przydatna
- tylko wtedy, gdy ma siΩ wiΩcej ni┐ jedno makro konfiguracyjne.
- Powinna byµ u┐ywana wy│▒cznie w makrach konfiguracyjnych wy│▒cznie
- po wykonaniu pierwszego z nich (ale nigdy wΩwn▒trz pierwszego z
- nich).
-
- NastΩpne dostΩpne makra znajduj▒ siΩ w makrze %patch. Makro te pomaga
- zautomatyzowaµ proces nanoszenie poprawek do ╝r≤de│. Mo┐liwe s▒
- liczne opcje opisane poni┐ej:
-
- ╖ # zastosuje Patch# jako plik z poprawkami.
-
- ╖ -p # podaje liczbΩ katalog≤w do odrzucenia z nazwy przed
- wykorzystaniem polecenia patch(1)
-
- ╖ -P Domy╢lnie stosowana jest Patch (lub Patch0). Ta flaga wy│▒cza
- to zachowanie a wiΩc wymaga dodatkowo 0 by g│≤wne pliki ╝r≤d│owe
- zosta│y rozpakowane. Opcja ta jest przydatna w drugim (b▒d╝
- dalszym) makrze %patch kt≤re wymaga innego ni┐ pierwsze makro
- numeru poprawki.
-
- ╖ Mo┐na te┐ napisaµ %patch# zamiast : %patch # -P
-
- To s▒ wszystkie makra jakich potrzebujesz. Po ich poprawnym napisaniu
- mo┐na wykonaµ dowolne inne komendy konfiguracyjne poprzez stworzenie
- odpowiednich fragment≤w skrypt≤w w sh. Wszystko co zostanie
- umieszczone a┐ do makra %build (omawianego w nastΩpnym rozdziale)
- bΩdzie wykonane przez sh. Przyk│ady powy┐ej mog▒ sugerowaµ rzeczy
- jakie chcia│by╢ tam umie╢ciµ.
-
-
- 6.5. Sekcja Build
-
- Dla tej sekcji nie ma jakich╢ specjalnych makr. Powinno siΩ w niej
- umieszczaµ dowolne polecenia potrzebne do stworzenia pakietu po
- rozpakowaniu ╝r≤de│, naniesieniu poprawek i przej╢ciu do katalogu
- roboczego. Jest to po prostu nastΩpny zbi≤r polece± przekazany do sh,
- wiΩc mo┐na tu u┐ywaµ dowolnych poprawnych polece± sh (w│▒cznie z
- komentarzami). Katalog roboczy na pocz▒tku ka┐dej z sekcji jest
- ustawiany na katalog g│≤wny z plikami ╝r≤d│owymi, o czym trzeba
- pamiΩtaµ i w razie potrzeby przechodziµ do odpowiednich podkatalog≤w.
-
-
- 6.6. Sekcja Install
-
- Tu r≤wnie┐ nie ma jakich╢ specjalnych makr. Sekcja ta powinna zawieraµ
- listΩ polece± potrzebnych do instalacji pakietu. Je╢li wykonujesz make
- install by zainstalowaµ pakiet, umie╢µ to tu. Mo┐esz r≤wnie┐ nanie╢µ
- poprawki do makefile'a zanim wykonasz make install. Je╢li nie to
- umie╢µ tu sekwencjΩ polece± sh jakich potrzebujesz. Katalog roboczy,
- identycznie jak w poprzednim przypadku, jest ustawiany przed
- wykonaniem tych polece± na g│≤wny katalog z plikami ╝r≤d│owymi.
-
-
- 6.7. Opcjonalne sekcje pre i post dla sekcji Install/Uninstall
-
- Mo┐esz tu umie╢ciµ skrypty do wykonania przed i po
- instalacji/deinstalacji (tzn. sekcjami Install/Uninstall). G│≤wny
- pow≤d to np. potrzeba wykonania komendy ldconfig po instalacji b▒d╝
- usuwaniu pakiet≤w zawieraj▒cych biblioteki dzielone. Makra s▒
- zdefiniowane jak poni┐ej:
-
- ╖ %pre makro z poleceniami wykonywanymi przed sekcj▒ Install.
-
- ╖ %post makro z poleceniami wykonywanymi po sekcji Install.
-
- ╖ %preun makro z poleceniami wykonywanymi przed sekcj▒ Uninstall.
-
- ╖ %postun makro z poleceniami wykonywanymi po sekcji Uninstall.
-
- Sekcje te mog▒ zawieraµ dowolne poprawne polecenia sh ( nie
- potrzebujesz wstawiaµ #!/bin/sh na pocz▒tku).
-
-
- 6.8. Sekcja Files
-
- W sekcji tej musisz wypisaµ pliki jakie wchodz▒ w sk│ad pakietu. RPM
- nie potrafi okre╢liµ jakie pliki zostaj▒ zainstalowan na skutek np.
- make install. Tego siΩ po prostu NIE DA rozs▒dnie zrobiµ. Owszem,
- by│a propozycja wykonywania polecenia find przed i po instalacji
- pakietu. Jednak w systemach wielou┐ytkownikowych nie jest to zbyt
- sensowne gdy┐ w tym samym czasie mog│o powstaµ wiele innych plik≤w nie
- maj▒cych najmniejszego zwi▒zku z instalowanym pakietem.
-
-
- W tej sekcji dostΩpne jest pare specjalnych makr. S▒ one opisane
- poni┐ej:
-
- ╖ %doc s│u┐y do zaznaczenia kt≤re pliki pakietu s▒ jego dokumentacj▒.
- Dokumentacja ta zostanie umieszczona w katalogu:
- /usr/doc/$NAZWA-$WERSJA-$MODYFIKACJA. Mo┐na zar≤wno podaµ nazwy
- kilku plik≤w w linii zawieraj▒cej to makro jak i podaµ te nazwy
- oddzielnie u┐ywaj▒c makra dla ka┐dej z nich.
-
- ╖ %config s│u┐y do zaznaczenia plik≤w konfiguracyjnych w obrΩbie
- pakietu. Chodzi tu o pliki typu: sendmail.cf, passwd, etc. W
- trakcie deinstalacji pliki te s▒ usuwane o ile nie by│y zmieniane.
- Je╢li by│y, to ich nazwa zostaje zmieniona poprzez dodanie ko±c≤wki
- .rpmsave. Analogicznie jak dla plik≤w z dokumentacj▒ jedno makro
- mo┐e s│u┐yµ do zdefiniowania kilku takich plik≤w.
-
- ╖ %dir zaznacza dany katalog jako nale┐▒cy do pakietu. Domy╢lnie,
- je╢li pojawi siΩ nazwa katalogu BEZ makra %dir, WSZYSTKO w tym
- katalogu jest w│▒czane w liste plik≤w i nastΩpnie instalowane jako
- czΩ╢µ pakietu. To makro pozwala tego unikn▒µ.
-
- ╖ %files -f <filename> pozwala na w│▒czenie listy plik≤w znajduj▒cej
- siΩ w jakim╢ pliku w obrΩbie katalogu z plikami ╝r≤d│owymi. Jest
- to wygodne gdy procedura instalacji buduje w│asn▒ listΩ plik≤w
- kt≤r▒ nastΩpnie mo┐na w│▒czyµ jedn▒ komend▒ bez podawania nazw tych
- plik≤w.
-
- NajwiΩksz▒ trudno╢ci▒ w li╢cie plik≤w jest podawanie katalag≤w. Je╢li
- np. podasz przez pomy│kΩ /usr/bin, to Tw≤j pakiet rpm bΩdzie zawiera│
- wszystkie pliki w katalogu /usr/bin w Twoim komputerze.
-
-
- 6.9. Tworzenie pakietu
-
-
- 6.9.1. Katalogi z plikami ╝r≤d│owymi
-
- Jedn▒ z podstawowych rzeczy jest poprawnie skonfigurowane katalog≤w w
- kt≤rych RPM bΩdzie budowa│ pakiet. Robi siΩ to poprzez plik
- /etc/rpmrc. WiΩkszo╢µ os≤b u┐ywa po prostu /usr/src.
-
- Mo┐liwe, ┐e bΩdziesz potrzebowa│ utworzyµ poni┐sze katalogi:
-
- ╖ BUILD jest katalogiem w kt≤rym RPM buduje pakiet. Pr≤bne tworzenie
- pakietu mo┐esz wykonaµ w jakimkolwiek katalogu kt≤ry tu podasz.
-
- ╖ SOURCES jest katalogiem w kt≤rym powiniene╢ umie╢ciµ oryginalne
- pliki ╝r≤d│owe i pliki z poprawkami. Jest to miejsce do kt≤rego RPM
- bΩdzie zagl▒da│ domy╢lnie.
-
- ╖ SPECS jest katalogiem w kt≤rym powinny siΩ znale╝µ wszystkie pliki
- specyfikuj▒ce (spec).
-
- ╖ RPMS RPM umie╢ci tu binarme pliki RPM po ich zbudowaniu.
-
- ╖ SRPMS RPM umie╢ci to pliki RPM z plikami ╝r≤d│owymi.
-
-
- 6.9.2. Pr≤bne tworzenie pakietu
-
- Pierwsz▒ rzecz▒ do zroienia jest doprowadzenie plik≤w ╝r≤d│owych do
- takiego stanu by kompilowa│y i/lub instalowa│y siΩ bez pomocy RPM-a.
- By to osi▒gn▒µ, rozpakuj ╝r≤d│a i zmie± nazwΩ katalogu na $NAZWA.orig.
- NastΩpnie ponownie rozpakuj ╝r≤d│a i pracuj na nich. Wejd╝ do ich
- katalogu i postΩpuj zgodnie z instrukcjia ich instalacji/kompilacji.
- Je╢li bΩdzie konieczna edycja jakich╢ plik≤w to konieczne bΩdzie
- wygenerowanie pliku z poprawkami (patch). Je╢li doprowadzisz ╝r≤d│a
- do stanu w kt≤rym bΩd▒ siΩ poprawnie instalowaµ/kompilowaµ - wyczy╢µ
- katalog ╝r≤d│owy. Upewnij siΩ, ┐e wszystkie pliki stworzone w
- skrypcie konfiguracyjnym (configure) zosta│y usuniΩte. NastΩpnie
- wyjd╝ z katalogu ╝r≤d│owego i wykonaj co╢ takiego:
-
-
- diff -uNr dirname.orig dirname > ../SOURCES/dirname-linux.patch
-
-
-
-
- (dirname w tym przyk│adzie to to samo co $NAZWA parΩ linii powy┐ej).
- Polecenie to stworzy plik z poprawkami jaki bΩdzie m≤g│ byµ wykorzys¡
- tany w pliku specyfikuj▒cy. Zauwa┐, ┐e ``linux'' w nazwie pliku z
- poprawkami jest jakim╢ wybranym identyfikatorem. Zamiast tego mo┐na
- u┐yµ czego╢ bardziej precyzyjnego jak np. ``config'' lub ``bugs''
- (b│Ωdy) by opisaµ dlaczego poprawki by│y potrzebne. Przed u┐yciem
- pliku z poprawkami warto do niego zajrzeµ by siΩ upewniµ, ┐e przypad¡
- kiem nie znalaz│o siΩ w nim co╢ niew│a╢ciwego jak np. pliki binarne.
-
-
- 6.9.3. Tworzenie listy plik≤w
-
- Teraz, gdy ╝r≤d│a siΩ kompiluj▒ i instaluj▒ i wiadomo jak to robiµ to
- zr≤b to, skompiluj i zainstaluj. Przyjrzyj siΩ wynikowi instalacji i
- stw≤rz w ten spos≤b listΩ plik≤w do u┐ycia w pliku specyfikuj▒cym.
- Zazwyczaj plik specyfikuj▒cy powstaje r≤wnocze╢nie z opisywanymi tu
- krokami. Po prostu tworzy siΩ go na pocz▒tku wstawiaj▒c to co jest
- znane i potem w miarΩ postΩpu prac uzype│nia siΩ go o brakuj▒ce
- kawa│ki.
-
-
- 6.9.4. Tworzenie pakietu RPM
-
- Gdy plik specyfikuj▒cy jest gotowy, mo┐na ju┐ pr≤bowaµ tworzyµ nowy
- pakiet. Najwygodniej jest to zrobiµ poni┐szym poleceniem:
-
-
-
- rpm -ba foobar-1.0.spec
-
-
-
-
- Opcja -b ma parΩ interesuj▒cyh podopcji:
-
- ╖ p oznacza wykonanie sekcji prep pliku specyfikuj▒cego.
-
- ╖ l wykona parΩ r≤┐nych test≤w na plikach %files.
-
- ╖ c wykonaj sekcjΩ prep i kompiluj. Jest to przydatne gdy jest siΩ
- niepewnym czy ╝r≤d│a w og≤le bΩd▒ siΩ kompilowaµ/instalowaµ.
- Owszem, na pierwszy rzut oka mo┐e to wygl▒daµ na zbΩdne gdy┐ mo┐na
- dot▒d pracowaµ ze ╝r≤d│ami a┐ bΩd▒ siΩ kompilowaµ jednak gdy
- przyzwyczaisz siΩ do wykorzystania RPM-a to spotkasz siΩ z
- sytuacjami w kt≤rach ta opcja oka┐e siΩ przydatna.
-
- ╖ i wykonaj prep, kompiluj i instaluj.
-
- ╖ b prep, kompiluj, instaluj, i buduj jedynie pakiet binarny.
-
- ╖ a zbuduj wszystko - zar≤wno pakiet ╝r≤d│owy jak i binarny.
-
- Jest te┐ parΩ dodatkowych podopcji do opcji -b:
-
- ╖ --short-circuit przejdzie prosto do okre╢lonego etapu (mo┐e byµ
- u┐yte wy│▒cznie z c oraz i)
-
- ╖ --clean usuwa katalog ze ╝r≤d│ami stworzony w czasie budowania
- pakietu.
-
- ╖ --keep-temps zachowa wszystkie pliki temporalne i skrypty kt≤re
- zosta│y umieszczone w /tmp. Jakie s▒ to pliki mo┐na siΩ dowiedzieµ
- wykorzystuj▒c opcjΩ -v.
-
- ╖ --test nie wykonuje ┐adnych rzeczywistych etap≤w choµ wykonuje
- keep-temps.
-
-
- 6.10. Testowanie pakietu
-
- Po stworzeniu pakietu rpm ╝r≤d│owego i binarnego nale┐y je
- przetestowaµ. Najpro╢ciej i najlepiej jest wykorzystaµ do tego
- zupe│nie inny komputer ni┐ ten na kt≤rym pakiet by│ tworzony. W ko±cu
- przy tworzeniu pakietu by│ on do╢µ czΩsto instalowany i na komputerze
- na kt≤rym powstawa│ powinno byµ to zrobione do╢µ dobrze.
-
- Mo┐na te┐ pr≤bowaµ rpm -u nazwapakietu.rpm na testowanym pakiecie ale
- mo┐e byµ to zdradliwe w sytuacji w kt≤rej jakie╢ pliki zosta│y
- pominiΩte w li╢cie plik≤w i nie zostan▒ wtedy usuniΩte. Wtedy
- zainstalowany program bΩdzie kompletny mimo tego, ┐e rpm bΩdzie
- b│Ωdny. PamiΩtaj, ┐e poniewa┐ Ty ju┐ zrobi│e╢ rpm -ba package, to
- zdecydowana wiΩkszo╢µ os≤b instaluj▒cych Tw≤j pakiet wykona jedynie
- rpm -i package. Upewnij siΩ, ┐e nie wykonujesz w sekcjach build lub
- install czego╢ co powinno byµ zrobione gdy instalowany jest wy│▒cznie
- pakiet binarny.
-
-
-
- 6.11. Co robiµ z Twoimi nowymi RPM-ami ?
-
- Gdy ju┐ stworzy│e╢ sw≤j w│asny pakiet RPM (zak│adaj▒c, ┐e nie ma ju┐
- takiego pakietu dostΩpnego pod postaci▒ RPM) mo┐esz udostΩpniµ wynik
- swojej pracy innym (zak│adaj▒c ┐e to czego pakiet stworzy│e╢ mo┐e byµ
- tak udostΩpniane). By udostΩpniµ, umie╢µ to na ftp.redhat.com
- <ftp://ftp.redhat.com>.
-
-
- 6.12. Co teraz?
-
- Prosimy sprawdziµ siΩ, ┐e nic nie zosta│o pominiΩte jeszcze raz
- czytaj▒c rozdzia│y o "Testowaniu" i "Co robiµ z nowymi RPM-ami".
- Chcemy mieµ jako RPM wszystko co siΩ da ale chcemy, ┐eby by│y to dobre
- RPM-y. Prosimy wiΩc po╢wiΩciµ trochΩ czasu na ich dok│adne
- przetestowanie i prosimy te┐ o umieszczenie ich w archiwum ftp tak, by
- ka┐dy m≤g│ z nich skorzystaµ. A tak┐e, prosimy upewniµ siΩ, ┐e
- umieszczasz jedynie bezp│atne oprogramowanie. Oprogramowanie
- komercyjne i shareware nie powinno byµ umieszczane w archiwum o ile
- nie zawieraj▒ klauzuli w ich prawach autorskich to dopuszczaj▒cej.
- Dotyczy to np. Netscape, ssh, pgp, etc.
-
-
- 7. Tworzenie RPM-≤w na wiele platform.
-
- RPM mo┐e byµ wykorzystywany do tworzenia pakiet≤w dla Intel i386,
- Digital Alpha pracuj▒cych pod Linux, oraz Sparc. S▒ te┐ doniesienia o
- jego wykorzystaniu na platformach SGI i HP. RPM ma parΩ cech kt≤re
- czyni▒ tworzenie pakiet≤w na wiele platform prostszymi. Pierwsz▒ z
- nich jest dyrektywa ``optflags'' w pliku /etc/rpmrc. Mo┐e ona byµ
- wykorzystana do ustawienia odpowiednich opcji i flag, specyficznych
- dla architektury, potrzebnych do kompilacji b▒d╝ instalacji. NastΩpn▒
- cech▒ u│atwiaj▒c▒ tworzenie pakiet≤w na wiele platform s▒ makra
- ``arch'' w pliku specyfikuj▒cym. Mog▒ one byµ wykorzystane do
- wykonania r≤┐nych rzeczy zale┐nych od architektury na kt≤rej pakiet
- jest instalowany. NastΩpn▒ tak▒ cech▒ jest dyrektywa ``Exclude'' w
- nag│≤wku.
-
-
- 7.1. Przyk│adowy plik specyfikuj▒cy .spec
-
- Poni┐ej zamieszczona jest czΩ╢µ pliku specyfikuj▒cego dla pakietu
- ``fileutils''. Jest on przygotowany do instalacji na dw≤ch
- platformach: Alfach i Intelu.
-
-
- Summary: GNU File Utilities
- Name: fileutils
- Version: 3.16
- Release: 1
- Copyright: GPL
- Group: Utilities/File
- Source0: prep.ai.mit.edu:/pub/gnu/fileutils-3.16.tar.gz
- Source1: DIR_COLORS
- Patch: fileutils-3.16-mktime.patch
-
- %description
- These are the GNU file management utilities. It includes
- programs
- to copy, move, list, etc, files.
-
- The ls program in this package now incorporates color ls!
-
- %prep
- %setup
-
- %ifarch alpha
- %patch -p1
- autoconf
- %endif
- %build
- configure --prefix=/usr --exec-prefix=/
- make CFLAGS="$RPM_OPT_FLAGS" LDFLAGS=-s
-
- %install
- rm -f /usr/info/fileutils*
- make install
- gzip -9nf /usr/info/fileutils*
-
- .
- .
- .
-
-
-
-
-
- 7.2. Dyrektywa optflags
-
- W powy┐szym przyk│adzie przedstawione zosta│o u┐ycie dyrektywy
- ``optflags'' z /etc/rpmrc. RPM_OPT_FLAGS przyjmuj▒ odpowiedni▒
- warto╢µ w zale┐no╢ci od tego na jakiej platformie instalowany jest
- pakiet. Do pliku Makefile u┐ytego w pakiecie nale┐y nanie╢µ poprawki
- by korzysta│ z tej zmiennej zamiast standardowych opcji (np. -m486 lub
- -O2). Mo┐esz siΩ zorientowaµ co powinno byµ zrobione poprzez
- zainstalowanie pakietu ╝r≤d│owego, jego rozpakowanie i przyjrzenie siΩ
- plikowi Makefile. NastΩpnie nale┐y zajrzeµ do plik≤w z poprawkami dla
- pliku Makefile i sprawdziµ jakie zmiany powinny byµ wprowadzone.
- 7.3. Makra
-
- Makro %ifarch jest bardzo istotne dla tworzenia pakiet≤w na wiele
- architektur. W wiΩkszo╢ci przypadk≤w potrzebujesz nanie╢µ jedn▒ lub
- dwie poprawki specyficzne tylko dla jednej, konkretnej architektury. W
- takiej sytacji RPM pozwala na naniesienie poprawki wy│▒cznie dla niej.
-
-
- W powy┐szym przypadku, pakiet fileutils ma poprawkΩ dla maszyn
- 64-bitowych. To naturalnie w chwili obecnej stosuje siΩ tylko do Alf.
- Tak wiΩc dodajemy makro %ifarch nanosz▒ce odpowiedni▒ poprawkΩ:
-
-
- %ifarch axp
- %patch1 -p1
- %endif
-
-
-
-
- To zapewni, ┐e poprawka nie bΩdzie naniesiona na ┐adnej innej
- architekturze a wy│▒cznie na alfach.
-
-
- 7.4. Wy│▒czanie pewnych platform w pakietach
-
- Mo┐na opiekowaµ siΩ ╝r≤d│owymi RPM-ami w jednym katalogu dla
- wszystkich platform. Uzyskuje siΩ to poprzez ``wy│▒czenie'' (ang.
- exclude) pewnych pakiet≤w z tworzenia ich dla pewnych architektur,
- tak, ┐e ci▒gle mo┐liwym jest:
-
-
- rpm --rebuild /usr/src/SRPMS/*.rpm
-
-
-
-
- daj▒ce w wyniku poprawne pakiety. Je╢li aplikacja nie zosta│a jeszcze
- do tej pory przeniesiona na dan▒ platformΩ to wystarczy dodaµ wiersz
- wygladaj▒cy mniej wiΩcej tak:
-
-
- ExcludeArch: axp
-
-
-
-
- do nag│≤wka pliku specyfikuj▒cego pakiet ╝r≤d│owy. NastΩpnie prze¡
- buduj pakiet na platformΩ na kt≤rej ju┐ pracuje. W ten spos≤b uzyskuje
- siΩ pakiet, kt≤ry kompiluje siΩ/tworzy siΩ np. na Intel-u podczas gdy
- mo┐e byµ │atwo opuszczony na Alfie.
-
-
- 7.5. Ostatnie poprawki
-
- Wykorzystanie RPM to tworzenia pakiet≤w przeznaczonych na wiele
- platform jest zazwyczaj prostsze ni┐ doprowadzenie pakietu do stanu w
- kt≤rym dajΩ siΩ on na nich zainstalowaµ. Jednak┐e w miarΩ jak
- powstaje wiΩcej i wiΩcej pakiet≤w w postaci binarnej staje siΩ to
- coraz prostsze. Je╢li przy tworzeniu pakietu zabrniesz w ╢lep▒
- uliczkΩ to jak zwykle, rozwi▒zaniem mo┐e byµ zajrzenie do kodu
- ╝r≤d│owego podobnego pakietu.
-
-
-
-
- 8. Uwaga o prawach autorskich
-
- Poni┐szy dokument i jego zawarto╢µ s▒ chronione prawem autorskim.
- Rozpowszechnianie go i jego zawarto╢ci jest dozwolone tak d│ugo jak
- d│ugo jego pozostaj▒ one nie zmienione. Innymi s│owy mo┐na go
- wy│▒cznie przeformatowywaµ, drukowaµ i rozpowszechniaµ.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-